package com.cssw.fyzb.core.dao.system;


import com.cssw.fyzb.core.model.dodb.SysFunc;
import com.ydn.dbframe.plugin.activerecord.Page;

import java.util.List;
import java.util.Map;

/**
 * 菜单
 *
 * @Param
 * @return
 **/
public interface FuncDao {
    /**
     * 查询菜单列表
     *
     * @param page
     * @param limit
     * @param param
     * @return
     */
    Page<SysFunc> list(int page, int limit, Map param);

    /**
     * 查询所有有效的菜单列表
     *
     * @return
     */
    List<SysFunc> listAllValid();

    /**
     * 查询所有有效的菜单列表
     *
     * @return
     */
    List<SysFunc> listAll();


    /**
     * 新增菜单
     *
     * @param supFuncId
     * @param funcName
     * @param funcCode
     * @param funcType
     * @param funcUrl
     * @param status
     * @return
     */
    Long save(Long supFuncId, String funcName, String funcCode,
              String funcIcon, String funcType, String funcUrl, String status, int sort,Long sysOperId);

    /**
     * 修改菜单
     *
     * @param funcId
     * @param supFuncId
     * @param funcName
     * @param funcCode
     * @param funcType
     * @param funcUrl
     * @param status
     */
    void update(Long funcId, Long supFuncId, String funcName, String funcCode,
                String funcIcon, String funcType, String funcUrl, String status, int sort,Long sysOperId);

    /**
     * 删除菜单
     *
     * @param funcId
     */
    void delete(Long funcId);


    /**
     * 根据菜单编码查询菜单信息
     *
     * @param funcCode
     */
    SysFunc getByCode(String funcCode);

    /**
     * 根据菜单标识查询菜单信息
     *
     * @param funcId
     */
    SysFunc getById(Long funcId);

    /**
     * 修改菜单状态
     *
     * @param funcId
     */
    void updateStatus(Long funcId, String status,Long userId);

    /**
     * 查询菜单列表
     *
     * @param operId
     * @return
     */
    List<SysFunc> listMenuByOperId(Long operId);

    /**
     * 查询按钮列表
     *
     * @param operId
     * @return
     */
    List<SysFunc> listFuncByOperId(Long operId);

    /**
     * 获取所有父节点
     *
     * @param funcId
     * @return
     */
    String getSupFuncIds(Long funcId);
}
